Migo商城2.0 门户首页大广告位显示(2) 十 六

Migo商城2.0 门户首页大广告位显示(2) 十 六

接上篇,

完成后,对每个节点右键点击,触发事件

触发菜单显示:

具体事件定义:

新增和修改事件,查api 对比上图代码位置,一看便知:

此处处理接着看代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
onAfterEdit : function(node){
var _tree = $(this);
if(node.id == 0){
// 新增节点
$.post("/rest/content/category",{parentId:node.parentId,name:node.text},function(data){
_tree.tree("update",{
target : node.target,
id : data.id
});
});
}else{
$.ajax({
type: "PUT",
url: "/rest/content/category",
data: {id:node.id,name:node.text},
success: function(msg){
//$.messager.alert('提示','新增商品成功!');
},
error: function(){
$.messager.alert('提示','重命名失败!');
}
});
}
}

新增节点代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/**
* 新增节点
* @param contentCategory
* @return
*/
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<ContentCategory> addContentCategery(ContentCategory contentCategory)
{
try {
if (logger.isInfoEnabled()){
logger.info("新增节点 contentCategory = {}",contentCategory);
}
//补全字段
contentCategory.setId(null);
contentCategory.setIsParent(false);
contentCategory.setSortOrder(1);
contentCategory.setStatus(1);
this.contentCategoryService.save(contentCategory);

//新增节点后可能会改变父节点的状态isParent
ContentCategory parent = this.contentCategoryService.queryById(contentCategory.getParentId());
if (!parent.getIsParent()) {

parent.setIsParent(true);
this.contentCategoryService.updateSelective(parent);
}
return ResponseEntity.status(HttpStatus.CREATED).body(contentCategory);
} catch (Exception e) {
logger.error("新增节点 服务器傲娇了 contentCategory = {}",contentCategory,e);
}
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
}

运行测试结果:

重命名后台代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* 修改节点
* @param contentCategory
* @return
*/
@RequestMapping(method = RequestMethod.PUT)
public ResponseEntity<Void> updateContentCategery(ContentCategory contentCategory){
try {
if (logger.isInfoEnabled()){
logger.info("修改节点 contentCategory = {}",contentCategory);
}
this.contentCategoryService.updateSelective(contentCategory);
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
} catch (Exception e) {
logger.error("修改节点 服务器傲娇了 contentCategory = {}",contentCategory,e);
}
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}

运行测试结果:

删除节点

js代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
else if(item.name === "delete"){
$.messager.confirm('确认','确定删除名为 '+node.text+' 的分类吗?',function(r){
if(r){
$.ajax({
type: "POST",
url: "/rest/content/category",
//注意此处的写法,不懂可谷歌 一下
data : {parentId:node.parentId,id:node.id,"_method":"DELETE"},
success: function(msg){
//$.messager.alert('提示','新增商品成功!');
tree.tree("remove",node.target);
},
error: function(){
$.messager.alert('提示','删除失败!');
}
});
}
});
}

相对应的web.xml的处理

1
2
3
4
5
6
7
8
9
<!-- 将POST请求转化为DELETE或者是PUT 要用_method指定真正的请求参数 -->
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

后台代码实现:

删除节点所涉及的逻辑还是比较多的

controller代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

/**
* 删除节点
* @param contentCategory
* @return
*/
@RequestMapping(method = RequestMethod.DELETE)
public ResponseEntity<Void> delete(ContentCategory contentCategory){
try {
if (logger.isInfoEnabled()){
logger.info("删除节点 contentCategory = {}",contentCategory);
}
this.contentCategoryService.deleteDuDu(contentCategory);
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
} catch (Exception e) {

logger.error("删除节点 服务器傲娇了 contentCategory = {}",contentCategory,e);
}
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
service代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.migo.service;

import com.migo.pojo.ContentCategory;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
* Author 知秋
* Created by kauw on 2016/11/20.
*/
@Service
public class ContentCategoryService extends BaseService<ContentCategory>{

public void deleteDuDu(ContentCategory contentCategory) {
List ids=new ArrayList();
ids.add(contentCategory.getId());

//调用递归方法添加旗下所有子节点id
this.addAllChildrenNode(ids,contentCategory.getId());
super.deleteByIds(ContentCategory.class,"id",ids);
//判断该节点是否还有兄弟节点,如果没有,修改父节点的isParent为false
ContentCategory example=new ContentCategory();
example.setParentId(contentCategory.getParentId());
List<ContentCategory> list = super.queryListByWhere(example);
if (list==null||list.isEmpty()){
ContentCategory parent=new ContentCategory();
parent.setId(contentCategory.getParentId());
parent.setIsParent(false);
super.updateSelective(parent);
}
}
private void addAllChildrenNode(List ids,Long pid){
ContentCategory example=new ContentCategory();
example.setParentId(pid);
List<ContentCategory> contentCategories = super.queryListByWhere(example);
for (ContentCategory contentCategory : contentCategories) {
ids.add(contentCategory.getId());
//判断该节点是否为父节点,如果是,继续调用该方法查找子节点
if (contentCategory.getIsParent()) {
//递归调用此方法
addAllChildrenNode(ids,contentCategory.getId());
}

}
}
}
运行操作结果:

内容分类管理完事

您的支持将鼓励我继续创作!